import { useAuthStore } from '@/store/auth'

// 路由守卫配置
export const setupAuthGuard = router => {
  router.beforeEach(async (to, from, next) => {
    const authStore = useAuthStore()
    console.log('authStore', authStore)
    // 初始化认证状态（仅在首次访问时）如果pinia store 中没有用户信息，则从浏览器内存中初始化认证状态
    if (!authStore.isAuthenticated) {
      authStore.initAuth()
    }

    // 需要认证的路由
    const requiresAuth = to.matched.some(record => record.meta.requiresAuth)

    // 如果路由需要认证
    if (requiresAuth) {
      // 检查是否已登录
      if (!authStore.isAuthenticated) {
        // 未登录，重定向到登录页
        next({
          name: 'Login',
          query: { redirect: to.fullPath } // 保存原始路径，登录后跳转
        })
        return
      }

      // 已登录，验证 token 是否有效
      const isValidToken = await authStore.checkAuth()
      if (!isValidToken) {
        // token 无效，重定向到登录页
        next({
          name: 'Login',
          query: { redirect: to.fullPath }
        })
        return
      }

      // 检查角色权限
      if (to.meta.requiresRole && to.meta.requiresRole.length > 0) {
        const userRole = authStore.userInfo?.role
        if (!to.meta.requiresRole.includes(userRole)) {
          // 权限不足，重定向到无权限页面或首页
          next({ name: 'Home' })
          return
        }
      }
    }

    // 如果已登录且访问登录页，重定向到首页
    if (to.name === 'Login' && authStore.isAuthenticated) {
      next({ name: 'Admin' })
      return
    }

    next()
  })
}

// // 页面标题守卫
// export const setupTitleGuard = router => {
//   router.afterEach(to => {
//     // 设置页面标题
//     const title = to.meta.title
//     if (title) {
//       document.title = `${title} - 管理后台`
//     } else {
//       document.title = '管理后台'
//     }
//   })
// }

export const setupTitleGuard = router => {
  router.afterEach(to => {
    const baseTitle = to.meta.title || 'WineShop'

    // 如果是 admin 页面，添加后缀
    if (to.path.startsWith('/admin')) {
      document.title = baseTitle.includes('后台管理') ? baseTitle : `${baseTitle} - 后台管理`
    } else {
      document.title = baseTitle
    }
  })
}
